Function.prototype.myCall = function (context,...args){ 
    //往函数的原型上添加一个自己的call方法
    //这里内部的this就是调用myCall方法的函数本身
    // greet.myCall(...) 执行时，myCall 内部的 this === greet  greet是一个函数

    context = context || globalThis //如果想要绑定的对象不存在，则默认绑定到全局对象上

    const fnSymbol = Symbol('fn'); // 使用 Symbol 避免属性名冲突
    context[fnSymbol] = this; // 将函数挂载到context上

    const result = context[fnSymbol](...args) // 执行函数,该函数的this会自动指向context,因为是context调用这个函数

    delete context[fnSymbol]; // 删除函数

    return result
}


const obj ={
    name:'zyj',
    sayhello:function(){
        console.log(this.name)
    }
}

const obj2 = {
    name:'zmq'
}

obj.sayhello();
obj.sayhello.myCall(obj2);